package Other;

import java.util.ArrayList;
import java.util.List;

public class leet_46 {

}

class Solution_46 {
    List<List<Integer>> result = new ArrayList<>();

    public List<List<Integer>> permute(int[] nums) {
        if(nums.length==0){return result;}
        List<Integer> tmpResult = new ArrayList<>();
        premutewhile(nums, tmpResult);
        return result;
    }

    /**
     *
     * @param nums       全排列的数组
     * @param tmpResult  当前排列的LIst
     */
    public void premutewhile(int[] nums, List<Integer> tmpResult){
        if(tmpResult.size() == nums.length){
            // 当排列玩就
            result.add(new ArrayList<>(tmpResult));
            return;
        }

        // 遍历
        for(int i=0; i<nums.length; i++){
            // 如果i为本身就直接跳过
            if(tmpResult.contains(nums[i])){continue;}
            tmpResult.add(nums[i]);
            premutewhile(nums, tmpResult);
            tmpResult.remove(tmpResult.size()-1);
        }
    }
}
